package GUI;

import Redis.redis;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Calendar;
import java.util.Properties;

public class Login implements ActionListener{
    //定义主窗口
    private final JFrame jf;
    //定义输入用户名和密码的标签提示
    private final JLabel InputUserName;
    private final JLabel InputPassWord;
    // 定义输入用户名文本框
    private final JTextField UserName;
    // 定义输入密码框
    private final JPasswordField PassWord;
    // 定义登录和取消按钮
    private final JButton Login;
    private final JButton Cancel;

    public Login() {
        // 各组件实例化过程
        jf = new JFrame("登录学生成绩发布系统");
        InputUserName = new JLabel("用户名（你的姓名）： ");
        InputPassWord = new JLabel("密码（初始为1100）：");
        UserName = new JTextField();
        PassWord = new JPasswordField();
        Login = new JButton("登录");
        Cancel = new JButton("退出");
        // 设置主窗口大小、位置和布局
        jf.setSize(500, 150);
        jf.setLocation(600, 400);
        // 设置窗口流式布局
        jf.setLayout(new FlowLayout());
        // 设置用户名和密码框大小
        UserName.setPreferredSize(new Dimension(300, 30));
        PassWord.setPreferredSize(new Dimension(300, 30));
        // 依次向主窗口添加各组件
        jf.getContentPane().add(InputUserName);
        jf.getContentPane().add(UserName);
        jf.getContentPane().add(InputPassWord);
        jf.getContentPane().add(PassWord);
        jf.getContentPane().add(Login);
        jf.getContentPane().add(Cancel);
        // 设置主窗口不可调节大小
        jf.setResizable(false);
        // 设置主窗口默认关闭操作
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 给登录和取消按钮添加 Action 监听器
        Login.addActionListener(this);
        Cancel.addActionListener(this);
        // 设置主窗口可见
        jf.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        // 如果单击【退出】按钮则程序退出
        if (e.getSource().equals(Cancel)) {
            System.exit(0);
        }
        // 如果单击【登录】按钮则检查用户名和密码是否匹配
        else if (e.getSource().equals(Login)) {
            check();
            new OracleGUI();
        }
    }

    public void check(){
        String username=String.valueOf(UserName.getText());
        String password=String.valueOf(PassWord.getPassword());
        if( redis.exist(username,password)){
            JOptionPane.showMessageDialog(null, "正确", "登陆成功", JOptionPane.INFORMATION_MESSAGE);

        }
        else{
            String sql;
            PreparedStatement ps = null;
            ResultSet rs = null;
            DataBaseConn dbc= new DataBaseConn();
            try{
                sql = "select * from s where sname = ? and password = ?";
                ps = dbc.getConn().prepareStatement(sql);
                ps.setString(1, username );
                ps.setString(2, password);
                rs = ps.executeQuery();
                if(rs.next()){
                    redis.add_username(username,password);
                    JOptionPane.showMessageDialog(null, "正确", "登陆成功", JOptionPane.INFORMATION_MESSAGE);
                }else{
                    JOptionPane.showMessageDialog(null, "账户或密码错误", "登陆失败", JOptionPane.ERROR_MESSAGE);
                    System.exit(0);
                }
            } catch (SQLException e) {e.printStackTrace();}
        }

    }

}
